uf_programming_teamfandomcom-20200214-history
Introduction to UFPT
What is UFPT? UF Programming Team is a group that discusses both algorithms and data structures, and then solves problems using them. Some days, we'll do more discussion than solving. Other days, we'll do more solving than discussion. Ideally, we'd be doing more of the latter. Our objective is to improve our abilities in understanding and ultimately solving problems found in algorithmic programming competitions. However, you don't have to have the intention of competing to come to our meetings. For more information: * What competition do we compete in? * What is an algorithm? * What is a data structure 'Why should I join?' Most of our members join because they've heard that they'll benefit by joining programming team in some way. 'Reasons people join' * They really enjoy programming and solving problems and just want to improve as much as possible by coming to our club * They want to learn more about data structures and algorithms that are frequently brought up in technical interviews * They want to get a job after college in computer science and increase their chances of doing so by participating in our club Many people who join for the second and/or third reason, and persist through the learning curve (it's a big learning curve, so you should never feel threatened), end up coming again because of the first reason. You'll become pretty good, if not really good, at problem solving This is sort of self explanatory, but you'll learn the persistence required for problem solving and all the little nuances that make you good at this sort of thing. You'll probably end up getting a good job/internship in software engineering There are no guarantees because it's all about the work you put in, but when your technical interviews come around when you're trying to find internships and jobs, you'll be way ahead of your peers in your technical problem solving ability. The format of problems asked during those interviews is almost exactly the same as the problems we do here. You'll develop a genuine interest and enjoyment of problem solving Maybe that sounds strange to you now. Maybe it doesn't (if it doesn't, that's great!). But trust that it carries out into all other aspects of your life in ways you wouldn't expect. You'll make a lot of friends who are very skilled in programming and problem solving Most people who attend practices have some sort of interest in programming, so you will share a common trait with almost everyone you talk to. Collaborating with your peers to solve these problems is always advised: some people view problems in different ways than you might. This helps build up your communication skills and ability to work in a team, which are valuable traits to have in the field of software engineering. 'What sites do we use?' *Sphere Online Judge (SPOJ) *topcoder *Codeforces *HackerRank *USA Computing Olympiad All of the sites above serve the same purpose: solving algorithmic programming problems and submitting the solutions to be judged for correctness. Some sites offer competitions, which usually last for some amount of time and require that you try to solve some number of problems. NOTE: if you try one of the contests on one of the sites above, they're likely going to be difficult, and you may not be able to solve all of the problems. You might even find that after an entire year of studying, you still can't solve all the problems in each contest. That's completely normal. These contests don't run like school exams. In many cases, only the absolute best of the best can solve all of the problems in a contest, and these are often people who have thousands of hours of experience. In short: don't feel discouraged. 'Who can join?' Anyone who is willing to learn data structures and algorithms can join. Everyone is able to learn, and because of that, anyone can become an adept programmer if they put in the work. You should know at least the following, in any programming language of your choice: *how to use variables and arrays *how to use control flow statements (if, else) *how to use loop constructs (for, while, for-each) *how to write methods (functions) Once you know how to do these things, don't sweat the rest. If you are unfamiliar with one or more of the concepts listed above, don't worry, we are here to help you learn, and we will make sure that the concepts above are clear before moving forward. 'Final words' We hope you're excited to begin competitive programming, and hopefully we will see you at our meetings. If you don't know when those are, and you somehow found this Wiki by some other means, then please join the Facebook groupto stay up to date. What now? Learn about the main online judge UF Programming Team uses, how to register and submit code, and what to make of the result you are given: SPOJ